class Solution
{
public:
    int evalRPN(vector<string> &tokens)
    {
        stack<long long> opNums;
        long long num1, num2;
        for (auto &token : tokens)
        {
            if (token == "+")
            {
                num1 = opNums.top();
                opNums.pop();
                num2 = opNums.top();
                opNums.pop();
                opNums.push(num1 + num2);
            }
            else if (token == "-")
            {
                num1 = opNums.top();
                opNums.pop();
                num2 = opNums.top();
                opNums.pop();
                opNums.push(num2 - num1);
            }
            else if (token == "*")
            {
                num1 = opNums.top();
                opNums.pop();
                num2 = opNums.top();
                opNums.pop();
                opNums.push(num1 * num2);
            }
            else if (token == "/")
            {
                num1 = opNums.top();
                opNums.pop();
                num2 = opNums.top();
                opNums.pop();
                opNums.push(num2 / num1);
            }
            else
            {
                opNums.push(stoll(token));
            }
        }
        return opNums.top();
    }
};